package com.zt.dev.processMonitoring.mapper;

import com.zt.dev.processMonitoring.pojo.ProcessMonitoring;
import com.zt.dev.processMonitoring.pojo.TestNode;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author 卜德凯
 * @date 2020/2/25 18:46
 */
@Mapper
@Repository
public interface ProcessMonitoringMapper {

    /**
     * 添加预期进度
     * @param expectedPlan
     * @return
     */
    Integer insertExpectedPlan(@Param("expectedPlan") String expectedPlan);

    /**
     * 根据id获取数据库已有的实验数据
     * @param id
     * @return
     */
    ProcessMonitoring findExperimentalPlanById(@Param("id") Integer id);

    /**
     * 更新实验进度和实验完成时间
     * @param experimentalPlan
     * @param completionTime
     * @param id
     * @return
     */
    Integer updateExperimentalPlan(@Param("experimentalPlan") String experimentalPlan,
                                   @Param("completionTime") String completionTime,
                                   @Param("id") Integer id);

    /**
     * 添加节点
     * @param testNodeList
     * @return
     */
    Integer addTestNode(List<TestNode> testNodeList);

    /**
     * 1.根据id修改节点状态
     * private Integer status;//节点状态（每个节点的）（0未开始、1执行中、2已完成）
     * 2.根据id修改节点的实际完成时间和完成情况描述
     * private String actualEndTime;//实际完成时间（每个节点的）
     * private String describe;//完成情况描述（每个节点的）
     * @param testNode
     * @return
     */
    Integer updateNodeState(TestNode testNode);

    /**
     * 获得所有已有进程的试验
     * @return
     */
    List<ProcessMonitoring> findPageTPM();

    /**
     * 根据试验id查看具体进程
     * @param pId
     * @return
     */
    List<TestNode> viewProcess(@Param("pId") Integer pId);
}
